#include "widget.h"
#include "ui_widget.h"

#include <QPushButton>
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    QPushButton *button = new QPushButton(this);
    button->setText("按钮");
    button->move(200, 200);

    // 对应的槽函数比较简单且一次性使用,会经常使用lanmda
    // 直接用lanmda表达式定义槽函数
    connect(button, &QPushButton::clicked, this, [button, this]() {
        qDebug() << "这是一个lanmda表达式";
        button->move(300, 300);
        this->move(100, 100);
    });

    // // [&] 引用捕获 [=] 按值捕获 将变量都捕获进来 -- 尽量保证捕获到的变量有意义,回调函数的执行时机不确定
    // // 例如自己创建对象，lanmda中要保证对象是没有被释放的,需要严格关注对象的声明周期
    // connect(button, &QPushButton::clicked, this, [ = ]() {
    //     qDebug() << "这是一个lanmda表达式";
    //     button->move(300, 300);
    //     this->move(100, 100);
    // });
}

Widget::~Widget()
{
    delete ui;
}


